﻿using DistributedVisionRunner.Interface.Model;
using Prism.Events;
using System;
using System.Collections.Generic;

namespace DistributedVisionRunner.Interface
{
    public class DataEvent : PubSubEvent<(byte[] data, string productType, int cavity, string sn, DateTime? timestamp, Guid guid, string adapterName)> { }

    public class VisionResultEvent : PubSubEvent<(DistributedVisionRunnerResultPack, Guid)> { }

    public class BoundaryItemsRequestEvent : PubSubEvent<string> { }

    public class BoundaryItemsRespondEvent : PubSubEvent<(string adapterName, EventBehavior behavior, Dictionary<OutputDataType, List<BoundaryItem>> boudaryItems)> { }

    public enum EventBehavior
    {
        /// <summary>
        /// The event is raised in response to request
        /// </summary>
        Response,
        /// <summary>
        /// The event is raised because of change of properties
        /// </summary>
        ChangeNotification
    }
}
